package com.maimang.platform.activiti.service;

import com.maimang.platform.activiti.dto.ProcessDefinitionDto;
import com.maimang.platform.base.Result;
import com.maimang.platform.page.TableDataInfo;
import org.activiti.engine.repository.Model;

import java.io.InputStream;

/**
 * 流程管理 服务层
 *
 * @author Rocky
 * @create 2018-12-12
 */
public interface ActProcessService {
	/**
	 * 将流程定义转换成模型
	 *
	 * @param processId 流程编号
	 * @return 模型数据
	 * @throws Exception
	 */
	Model convertToModel(String processId) throws Exception;

	/**
	 * 使用部署对象ID查看流程图
	 *
	 * @param deploymentId 部署id
	 * @param imageName    资源文件名
	 * @return 文件流
	 */
	InputStream findImageStream(String deploymentId, String imageName) throws Exception;

	/**
	 * 查询流程定义
	 *
	 * @param processDefinition 流程信息
	 * @return 流程集合
	 */
	TableDataInfo selectProcessDefinitionList(ProcessDefinitionDto processDefinition);

	/**
	 * 部署流程定义
	 *
	 * @param is       文件流
	 * @param fileName 文件名称
	 * @param category 类型
	 * @return 结果
	 */
	Result saveNameDeplove(InputStream is, String fileName, String category);

	/**
	 * 根据流程部署id，删除流程定义
	 *
	 * @param ids 部署ids
	 * @return 结果
	 */
	boolean deleteProcessDefinitionByDeploymentIds(String ids);
}
